package com.ripservice.dto;

import com.ripservice.entity.RouteSnapshotEntity;
import lombok.Data;

import java.time.ZoneId;
import java.time.format.DateTimeFormatter;

/**
 * 路由快照数据传输对象
 * 用于在应用层传递路由快照信息
 */
@Data
public class RouteSnapshotDto {
    /**
     * 快照记录的唯一标识符
     */
    private Long id;
    
    /**
     * 所属模拟过程的ID
     */
    private Long simulationId;
    
    /**
     * 路由器的唯一标识符
     */
    private String routerId;
    
    /**
     * 格式化后的时间字符串
     * 格式：yyyy-MM-dd HH:mm:ss
     */
    private String formattedTime;
    
    /**
     * 路由表信息的JSON字符串表示
     */
    private String routeJson;

    public RouteSnapshotDto() {}

    /**
     * 基于路由快照实体构造DTO对象
     * @param entity 路由快照实体对象
     */
    public RouteSnapshotDto(RouteSnapshotEntity entity) {
        this.id = entity.getId();
        this.simulationId = entity.getSimulationId();
        this.routerId = entity.getRouterId();
        this.routeJson = entity.getRouteJson();
        
        // 将Instant时间转换为本地时间格式
        if (entity.getSnapshotTime() != null) {
            // 转换为本地时间格式：yyyy-MM-dd HH:mm:ss
            this.formattedTime = entity.getSnapshotTime()
                .atZone(ZoneId.systemDefault())
                .format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
        }
    }
}